Modular Routine Engine

Modular routing engine structure has been added to allow
for ease of "plugging" new routing module.

Currently, only unicast callbacks are supported. Multicast
can be added later.

An existing routing module is up-down "updn", which may be
activate with '-R updn' option (instead of old '-u').

General usage is:
$ opensm -R 'module-name'

There is also a trivial routing module which is able
to load LFT tables from a dump file.

Main features:

- support for unicast LFTs only; support for multicast can be added later
- this will run after min hop matrix calculation
- this will load switch LFTs according to the path entries introduced in
  the dump file
- no additional checks will be performed (such as "is port connected", etc.)
- in case when fabric LIDs were changed this will try to reconstruct LFTs
  correctly if endport GUIDs are represented in the dump file (in order
  to disable this GUIDs may be removed from the dump file or zeroed)

The dump file format is compatible with output of 'ibroute' util and for
whole fabric may be generated with script like this:

  for sw_lid in `ibswitches | awk '{print $NF}'` ; do
	ibroute $sw_lid
  done > /path/to/dump_file

, or using DR paths:

  for sw_dr in `ibnetdiscover -v \
		| sed -ne '/^DR path .* switch /s/^DR path \[\(.*\)\].*$/\1/p' \
		| sed -e 's/\]\[/,/g' \
		| sort -u` ; do
	ibroute -D ${sw_dr}
  done > /path/to/dump_file

This script is dump_lfts.sh

In order to activate new module use:

  opensm -R file -U /path/to/dump_file

If the dump_file is not found or is in error, the default routing 
algorithm is utilized.

NOTE: ibroute has been updated to support this (for switch management ports).
Also, lmc was added to switch management ports. ibroute needs to be r7855 or
later from the trunk.

